package Controle;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import DAO.AutorDAO;
import DAO.AutorDAOImplementation;
import POJO.Autor;


@WebServlet("/ctrlAutor")
public class ctrlAutor extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private AutorDAO aDAO;
	
	public ctrlAutor()
	{
		super();		
	}
	
	@Override
	public void init()
	{
		aDAO =  new AutorDAOImplementation();
	}
	
	protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException 
	{
		String cmd = request.getParameter("cmd");		
		
		String codigoAutor = request.getParameter("txtID");
		String nomeAutor = request.getParameter("txtNomeAutor");
		String sobreNomeAutor = request.getParameter("txtSobreNomeAutor");
		
		Autor a = new Autor();
		
		
		a.setNome(nomeAutor);
		a.setSobrenome(sobreNomeAutor);
		
		if ("Cadastrar".equalsIgnoreCase(cmd)) 
		{
			try 
			{						
				aDAO.CadastrarAutor(a);
							
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}			
			
			request.setAttribute("MSG", "Autor " + a.getNome() + " "+ a.getSobrenome()
					+ " foi inserido com sucesso");
		} else if ("alterar".equalsIgnoreCase(cmd)) 
		{
			a.setCodigoAutor(Integer.valueOf(codigoAutor));
			try {
				aDAO.AlterarAutor(a);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			request.setAttribute("MSG", "Autor " + a.getNome()+ " "+ a.getSobrenome()
					+ " foi atualizado com sucesso");

		} else if ("Pesquisar".equalsIgnoreCase(cmd))
		{			
			try {
				a = aDAO.consultaAutor(a);
				request.setAttribute("AUTOR", a);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}		
		} else if ("Pesquisar Todos".equalsIgnoreCase(cmd)) {
			try {
				List<Autor> produtos = aDAO.listaAutor();
				request.setAttribute("listAutores", produtos);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		
		
		// Fazer o forward de volta para a pagina de Autor
		RequestDispatcher rd = request.getRequestDispatcher("./AutorTela.jsp");
		rd.forward(request, response);
		
	}
	
	protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {

		String cmd = request.getParameter("cmd");
		String codigoAutor = request.getParameter("txtId");		
				
		if ("Remover".equalsIgnoreCase(cmd)) {
			Autor a = new Autor();
			a.setCodigoAutor(Integer.valueOf((codigoAutor)));
			try {
				aDAO.RemoveAutor(a);;
			} catch (SQLException e) {
				e.printStackTrace();
			}
			request.setAttribute("MSG", "Autor foi removido com sucesso");

		} else if ("Editar".equalsIgnoreCase(cmd)) {
			Autor a = new Autor();
			a.setCodigoAutor(Integer.valueOf((codigoAutor)));

			try {
				a = aDAO.consultaAutor(a);
			} catch (SQLException e) {

				e.printStackTrace();
			}

			if (a != null) {
				request.setAttribute("AUTOR", a);
				request.setAttribute("MSG", "Autor "+a.getNome()+ " " + a.getSobrenome() 
						+ " foi encontrado com sucesso");
			}
		}
		RequestDispatcher rd = request.getRequestDispatcher("./AutorTela.jsp");
		rd.include(request, response);
	}	
}